# from faker import Faker
# 1、整理类的笔记到小红书
# 2、定义一个学生Student类。有下面的类属性：
# 1 姓名 name
# 2 年龄 age
# 3 成绩 score（语文，数学，英语) [每课成绩的类型为整数]
class Student():
    def __init__(self,name = "小天才",age=18,score = {"语文":60,"数学":70,"英语":80}):
        self.name = name
        self.age = age
        self.score = score
    def max1(self):
        max2 = 0
        for key,value in self.score.items():
            if value > max2:
                max2 = value
        return max2
    def t(self):
        with open("./student.txt", "a", encoding="utf-8") as f:
            f.write("\n姓名:a,年龄:29,成绩:{语文:99,数学:100,英语:85}")
    def tatal(self):
        return f"学生姓名为{self.name},年龄为{self.age},成绩情况是{self.score}"
# 类方法：
# 1 获取学生的姓名：get_name() 返回类型:str
# get_name = Student()
# print(str(get_name.name))
# 2 获取学生的年龄：get_age() 返回类型:int
# get_age = Student()
# print(get_age.age)
# 3 返回3门科目中最高的分数。get_course() 返回类型:int
# get_course = Student()
# print(get_course.max1())
# 4 将每个实例学生对象写进txt文件里，要持久保存
# 举例：{"姓名":"a","年龄":29,"成绩":{"语文":99,"数学":100,"英语":85}
## with open("./student.txt","a",encoding="utf-8")as f:
##     f.write("\n姓名:a,年龄:29,成绩:{语文:99,数学:100,英语:85}")
# get_course = Student()
# get_course.t()
# 5 获取所有学生的信息
# get_course = Student()
# print(get_course.tatal())
#
# 写好类以后，可以定义2个同学测试下:
# zm = Student('zhangming',20,[69,88,100])
# 返回结果：
# zhangming
# 20
#
# 3、定义一个字典类：dictclass。完成下面的功能：
#
# dict = dictclass({你需要操作的字典对象})
class dictclass():
    def __init__(self,name = {'a': 1, 'b': 2, 'c': 3},name1 = {'d': 4, 'f': 5, 'g': 6}):
        self.name = name
        self.name1 = name1
    def del1(self,key):
        if key in self.name:
            del self.name[key]
            return f"已删除{key}，字典中还剩{self.name}"
        else:
            return "没有这个key"
    def get_dict(self,key):
        if key in self.name:
            return f"字典{self.name}中含有{key}的值为{self.name[key]}"
        else:
            return "not found"

    def get_key(self):
        list1 = []
        for key,value in self.name.items():
            list1.append(key)
        return list1
    def update_dict(self):
        list2 = []
        for key,value in self.name.items():
            list2.append(self.name[key])
        for key,value in self.name1.items():
            list2.append(self.name1[key])
        return list2


# 1 删除某个key
#
# del_dict(key)
# dict = dictclass()
# print(dict.del1('a'))
#
# 2 判断某个键是否在字典里，如果在返回键对应的值，不存在则返回"not found"
#
# get_dict(key)
# dict = dictclass()
# print(dict.get_dict('a'))
# 3 返回键组成的列表：返回类型;(list)
#
# get_key()
# dict = dictclass()
# print(dict.get_key())
# 4 合并字典，并且返回合并后字典的values组成的列表。返回类型:(list)
# dict = dictclass()
# print(dict.update_dict())
#
# update_dict({要合并的字典})
#
# 100
#
# 4、定义一个列表的操作类：Listinfo
class Listinfo():
    def __init__(self,name=[123]):
        self.name = name
    def add_key(self):
        list1 = [111]
        list1.append(self.name)
        return list1

    def get_key(self):
        self.name = [1,2,3]
        list1 = self.name[0]
        return list1
    def update_list(self):
        list2 = [456]
        self.name.extend(list2)
        return self.name

    def del_key(self):
        return self.name.pop(-1)






# 包括的方法:
#
# 1 列表元素添加: add_key(keyname) [keyname:字符串或者整数类型]
# num = 122
# dict = Listinfo(num)
# print(dict.add_key())
# 2 列表元素取值：get_key(num) [num:整数类型]
# dict = Listinfo()
# num = 122
# dict = Listinfo(num)
# print(dict.get_key())
# 3 列表合并：update_list(list) [list:列表类型]
# dict = Listinfo()
# print(dict.update_list())
# 4 删除并且返回最后一个元素：del_key()
# a = [44,222,111,333,454,'sss','333']
# dict = Listinfo(a)
# print(dict.del_key())
#

#
# 5、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
class student_system():
    def __init__(self,name = [{"学生1":"小天才","年龄":18,"家庭地址":"沈阳","手机号":123},
                              {"学生2":"小天才1","年龄":18,"家庭地址":"沈阳","手机号":123}]):
        self.name = name
    def joinstudent(self):
        self.name.append({"学生3":"小天才2","年龄":18,"家庭地址":"沈阳","手机号":123})
        return f"\n{self.name}，加入成功"
    # def updatestudent(self):
    #     for key,value in self.name.
    # def delstudent(self):
    #     rem_name = self.name.remove("学生1")
    #     return f"删除了{rem_name}，还剩{self.name}"
    # def showstudent(self):

list1 = [{"学生1":"小天才","年龄":18,"家庭地址":"沈阳","手机号":123},
                              {"学生2":"小天才1","年龄":18,"家庭地址":"沈阳","手机号":123}]

keys = [i for i in list1[0].keys()]
for i in keys:
    if i == "学生1":
        pass



# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# get_course = student_system()
# print(get_course.joinstudent())
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# get_course = student_system()
# get_course.updatestudent()
# 删除学生：删除的学生将不在展示
# get_course = student_system()
# print(get_course.delstudent())
# get_course = student_system()
# get_course.delstudent()
# 展示全部学生：可以看到全部的学生姓名
# get_course = student_system()
# get_course.showstudent()
# 学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
#
# 6、点餐管理系统
# 1》、餐馆可以新增菜品、下架菜品、修改菜品
# 2》、每个菜品，都有对应的库存，所有菜品的库存均为999，每出一道菜，库存-1
# 菜品有对应的价格，餐厅老板定义价格每道菜不允许超过15元，没有小数单位，均为整数
# 3》、餐馆后台有点赞系统，能够收集客户对菜品的喜好，0~5分
# 4》、有菜品评分提报功能，对平均分数（菜品总分/打分人数）低于3分的菜品进行强制下架；
# class Listinfo():
#     def __init__(self,cai = {"菜名"name1=[999],name2=[999],name3=[999]}):
#         self.name1 = name1
#         self.name2 = name2
#         self.name3 = name3
#     def add_key(self):
#         list1 = [111]
#         list1.append(self.name)
#         return list1
#
#     def get_key(self):
#         self.name = [1,2,3]
#         list1 = self.name[0]
#         return list1
#     def update_list(self):
#         list2 = [456]
#         self.name.extend(list2)
#         return self.name
#
#     def del_key(self):
#         return self.name.pop(-1)
# 7、定义一个桌子类（Desk），包含长（length）、宽（width）、高（height）属性，
# 包含一个打印桌子信息属性的方法（showInfo）。实例化2个桌子对象，为其赋予不同的属性值，并调用showInfo方法，输出每个桌子的信息。
#
# 8、定义一个用户类(User),用户名(username)和密码(password)是这个类的属性。
class User():
    def __init__(self,username=123,password=123):
        self.username = username
        self.password = password

# dict = User()
# print(dict())
# 9、定义一个计算器类，有加减乘除四个方法
class computer():
    def __init__(self,num1=1,num2 =2 ):
        self.num1 = num1
        self.num2 = num2
    def add(self):
        num3 = self.num1+self.num2
        return num3
    def jian(self):
        num3= self.num1-self.num2
        return num3
    def cheng(self):
        num3= self.num1*self.num2
        return num3
    def chu(self):
        num3 = self.num1 / self.num2
        return num3
# dict = computer()
# print(dict.add())
# 10、创建一个名为Person的类，具有以下属性和方法：
class Person():
    def __init__(self,name="小天才",age =18 ):
        self.name = name
        self.age = age
    def greet(self):

        print(f"你好!{self.name}")
# dict = Person()
# dict.greet()
# 属性：name（姓名），age（年龄）
# 方法：greet()，打印出一句问候语，包括该人的姓名和年龄
#
# 11、定义一个图书管理系统类，图书可以新增、修改、删除，要求新增的每个图书都加到txt文本里，数据持久化
# 新增：图书名、作者名称、新建年月日
# 修改：图书名、作者名称、新建年月日
# 删除：图书删掉，且不在展示
# 查看：全量查询，精确查询，需要用户传入形参来控制返回结果
#
# 12、创建一个名为"Car"的类，该类具有"品牌"和"颜色"属性。创建一个"start_engine"方法，
# 该方法打印出"启动汽车引擎！"的消息。创建一个"stop_engine"方法，该方法打印出"关闭汽车引擎！"的消息
class Car():
    def __init__(self,品牌="小天才",颜色 ="黑" ):
        self.小天才 = 小天才
        self.颜色 = 颜色
    def start_engine(self):

        print(f"启动汽车引擎！")
    def stop_engine(self):

        print(f"关闭汽车引擎！")
# dict = Car()
# dict.greet()
#
# 13、淘宝商家后台，可以上架商品、下架商品，功能如下：
#  （1） 可以添加商品，商家添加完的商品会存到商品列表
#  1.1  商品要有名称、sku、价格
#  （2） 可以修改商品信息：名称、sku、价格
#  （3） 可以对商品进行下架，下架后的商品不再展示
#
# 14、定义一个人类
# 1.小明和小美都爱跑步
# 2.小美体重45.0公斤
# 3.小明体重75.0公斤
# 4.每次跑步都会减少0.5公斤
# 5.每次吃东西都会增加1公斤
class human():
    def __init__(self,小美=45,小明 =75 ):
        self.小美 = 小美
        self.小明 = 小明
    def run(self):
        a=self.小美-0.5
        b=self.小明-0.5
        return f"跑完{self.小美}为{a}公斤，{self.小明}为{b}公斤"

# dict = human()
# print(dict.run())
# 15、士兵瑞恩有一把ak47
# 士兵可以开火（开火扣动的是班级）
# 抢能够发射子弹（把子弹打出去）
# 抢能够装子弹–增加子弹数量
#
# 要求没子弹，需要输出没有子弹了，且发射失败
class human():
    def __init__(self,ak47=30 ):
        self.ak47 = ak47
    def banji(self):
        if self.ak47>0:
            self.ak47-=1
            print("开火")
        else:
            print("没有子弹了")
    def banji(self):
        self.bullet_count += count
        print(f"装载了{count}颗子弹！当前剩余子弹数量：{self.bullet_count}")



# dict = human()
# print(dict.banji())
